package com.entmanage.base.collegeco.service.impl;

import java.util.List;

import com.entmanage.base.collegeco.domain.CollegecoEvalTemplateItem;
import com.entmanage.base.collegeco.mapper.CollegecoEvalTemplateMapper;
import com.entmanage.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.entmanage.common.utils.SecurityUtils;
import java.util.ArrayList;
import com.entmanage.common.utils.StringUtils;
import org.springframework.transaction.annotation.Transactional;
import com.entmanage.base.collegeco.domain.CollegecoEvalTemplate;
import com.entmanage.base.collegeco.service.ICollegecoEvalTemplateService;

/**
 * 实习评分标准模板库（主）Service业务层处理
 *
 * @author lsq
 * @date 2025-08-01
 */
@Service
public class CollegecoEvalTemplateServiceImpl implements ICollegecoEvalTemplateService
{
    @Autowired
    private CollegecoEvalTemplateMapper hrmEvalTemplateMapper;

    @Override
    public List<CollegecoEvalTemplateItem> getTemplateItems(Long templateId) {
        CollegecoEvalTemplateItem item = new CollegecoEvalTemplateItem();
        item.setTemplateId(templateId);
        return hrmEvalTemplateMapper.selectHrmEvalTemplateItemList(item);
    }
    /**
     * 查询实习评分标准模板库（主）
     *
     * @param templateId 实习评分标准模板库（主）主键
     * @return 实习评分标准模板库（主）
     */
    @Override
    public CollegecoEvalTemplate selectHrmEvalTemplateByTemplateId(Long templateId)
    {
        return hrmEvalTemplateMapper.selectHrmEvalTemplateByTemplateId(templateId);
    }

    /**
     * 查询实习评分标准模板库（主）列表
     *
     * @param hrmEvalTemplate 实习评分标准模板库（主）
     * @return 实习评分标准模板库（主）
     */
    @Override
    public List<CollegecoEvalTemplate> selectHrmEvalTemplateList(CollegecoEvalTemplate hrmEvalTemplate)
    {
        return hrmEvalTemplateMapper.selectHrmEvalTemplateList(hrmEvalTemplate);
    }

    /**
     * 新增实习评分标准模板库（主）
     *
     * @param hrmEvalTemplate 实习评分标准模板库（主）
     * @return 结果
     */
    @Transactional
    @Override
    public int insertHrmEvalTemplate(CollegecoEvalTemplate hrmEvalTemplate)
    {
        // 保存用户和部门id
        hrmEvalTemplate.setUserId(SecurityUtils.getUserId());
        hrmEvalTemplate.setDeptId(SecurityUtils.getDeptId());
        hrmEvalTemplate.setCreateBy(SecurityUtils.getUsername());
        hrmEvalTemplate.setCreateTime(DateUtils.getNowDate());
        int rows = hrmEvalTemplateMapper.insertHrmEvalTemplate(hrmEvalTemplate);
        insertHrmEvalTemplateItem(hrmEvalTemplate);
        return rows;
    }

    /**
     * 修改实习评分标准模板库（主）
     *
     * @param hrmEvalTemplate 实习评分标准模板库（主）
     * @return 结果
     */
    @Transactional
    @Override
    public int updateHrmEvalTemplate(CollegecoEvalTemplate hrmEvalTemplate)
    {
        hrmEvalTemplate.setUpdateTime(DateUtils.getNowDate());
        hrmEvalTemplateMapper.deleteHrmEvalTemplateItemByTemplateId(hrmEvalTemplate.getTemplateId());
        insertHrmEvalTemplateItem(hrmEvalTemplate);
        return hrmEvalTemplateMapper.updateHrmEvalTemplate(hrmEvalTemplate);
    }

    /**
     * 批量删除实习评分标准模板库（主）
     *
     * @param templateIds 需要删除的实习评分标准模板库（主）主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteHrmEvalTemplateByTemplateIds(Long[] templateIds)
    {
        hrmEvalTemplateMapper.deleteHrmEvalTemplateItemByTemplateIds(templateIds);
        return hrmEvalTemplateMapper.deleteHrmEvalTemplateByTemplateIds(templateIds);
    }

    /**
     * 删除实习评分标准模板库（主）信息
     *
     * @param templateId 实习评分标准模板库（主）主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteHrmEvalTemplateByTemplateId(Long templateId)
    {
        hrmEvalTemplateMapper.deleteHrmEvalTemplateItemByTemplateId(templateId);
        return hrmEvalTemplateMapper.deleteHrmEvalTemplateByTemplateId(templateId);
    }

    /**
     * 新增评分模板-评分项明细信息
     *
     * @param hrmEvalTemplate 实习评分标准模板库（主）对象
     */
    public void insertHrmEvalTemplateItem(CollegecoEvalTemplate hrmEvalTemplate)
    {
        List<CollegecoEvalTemplateItem> hrmEvalTemplateItemList = hrmEvalTemplate.getHrmEvalTemplateItemList();
        Long templateId = hrmEvalTemplate.getTemplateId();
        if (StringUtils.isNotNull(hrmEvalTemplateItemList))
        {
            List<CollegecoEvalTemplateItem> list = new ArrayList<CollegecoEvalTemplateItem>();
            for (CollegecoEvalTemplateItem hrmEvalTemplateItem : hrmEvalTemplateItemList)
            {
                hrmEvalTemplateItem.setTemplateId(templateId);
                list.add(hrmEvalTemplateItem);
            }
            if (list.size() > 0)
            {
                hrmEvalTemplateMapper.batchHrmEvalTemplateItem(list);
            }
        }
    }
}

